/*
 * Decompiled with CFR 0.150.
 * 
 * Could not load the following classes:
 *  cn.hutool.core.util.ObjectUtil
 *  de.felixroske.jfxsupport.FXMLController
 *  javafx.application.Platform
 *  javafx.collections.FXCollections
 *  javafx.collections.ObservableList
 *  javafx.event.EventHandler
 *  javafx.fxml.FXML
 *  javafx.fxml.Initializable
 *  javafx.scene.Node
 *  javafx.scene.control.Alert
 *  javafx.scene.control.Alert$AlertType
 *  javafx.scene.control.CheckBox
 *  javafx.scene.control.TableCell
 *  javafx.scene.control.TableColumn
 *  javafx.scene.control.TableView
 *  javafx.scene.control.cell.PropertyValueFactory
 *  javafx.scene.input.KeyCode
 *  javafx.scene.input.KeyEvent
 *  javafx.scene.layout.AnchorPane
 *  javafx.scene.text.Text
 *  javafx.stage.Modality
 *  javafx.stage.Stage
 *  javafx.util.Callback
 *  org.slf4j.Logger
 *  org.slf4j.LoggerFactory
 *  org.springframework.beans.factory.annotation.Autowired
 *  org.springframework.util.CollectionUtils
 */
package com.gys.controller.salesReceipts;

import cn.hutool.core.util.ObjectUtil;
import com.gys.common.util.CommonUtil;
import com.gys.common.util.SpringUtil;
import com.gys.controller.BaseController;
import com.gys.controller.dataManger.ControllerManger;
import com.gys.controller.saleRecipel.RemoteAuditController;
import com.gys.controller.salesReceipts.RecipelDrugsController;
import com.gys.controller.salesReceipts.RecipelInfoInputController;
import com.gys.controller.salesReceipts.SalesReceiptsMainController;
import com.gys.data.saleRecipel.GaiaSdSaleRecipelRecordOutData;
import com.gys.data.salesReceipts.GetSalesReceiptsTableOutData;
import com.gys.data.salesReceipts.SelectRecipelDrugsOutData;
import com.gys.view.saleRecipel.RemoteAuditlView;
import com.gys.view.salesReceipts.RecipelInfoInputView;
import com.gys.view.salesReceipts.SelectRecipelDrugsView;
import de.felixroske.jfxsupport.FXMLController;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.ResourceBundle;
import java.util.Timer;
import java.util.TimerTask;
import javafx.application.Platform;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.control.Alert;
import javafx.scene.control.CheckBox;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.AnchorPane;
import javafx.scene.text.Text;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.util.Callback;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;

@FXMLController
public class SelectRecipelDrugsController
extends BaseController
implements Initializable {
    private static final Logger log = LoggerFactory.getLogger(SelectRecipelDrugsController.class);
    @FXML
    private TableColumn<SelectRecipelDrugsOutData, String> specs;
    @FXML
    private TableColumn<SelectRecipelDrugsOutData, String> proFactoryName;
    @FXML
    private TableColumn<SelectRecipelDrugsOutData, String> prePrice;
    @FXML
    private TableColumn<SelectRecipelDrugsOutData, String> num;
    @FXML
    private TableView<SelectRecipelDrugsOutData> tableView;
    @FXML
    private TableColumn<SelectRecipelDrugsOutData, String> index;
    @FXML
    private TableColumn<SelectRecipelDrugsOutData, CheckBox> checkBox;
    @FXML
    private TableColumn<SelectRecipelDrugsOutData, String> proName;
    @FXML
    private AnchorPane pane;
    @FXML
    private Text title;
    @Autowired
    private SalesReceiptsMainController salesReceiptsMainController;
    @Autowired
    private RecipelInfoInputController recipelInfoInputController;
    @Autowired
    private RecipelDrugsController recipelDrugsController;
    @Autowired
    private RemoteAuditController remoteAuditController;
    private ObservableList<SelectRecipelDrugsOutData> observableTableList = FXCollections.observableArrayList(new ArrayList());
    public int numTh = 0;
    public boolean upPaper = false;
    List<SelectRecipelDrugsOutData> selectDataList = new ArrayList<SelectRecipelDrugsOutData>();
    List<SelectRecipelDrugsOutData> selectRecipelDrugsOutDataList = new ArrayList<SelectRecipelDrugsOutData>();
    List<List<SelectRecipelDrugsOutData>> selectDataIndexList = new ArrayList<List<SelectRecipelDrugsOutData>>();

    public void initialize(URL location, ResourceBundle resources) {
        ControllerManger.controllerMap.put(this.getClass().getSimpleName(), this);
        this.bangding();
        this.init();
    }

    @Override
    public void init() {
        if (ObjectUtil.isEmpty(this.pane)) {
            return;
        }
        this.title.setText("\u5904\u65b9" + this.numTh);
        this.initCheckBox();
        this.selectDataList = new ArrayList<SelectRecipelDrugsOutData>();
        new Timer().schedule(new TimerTask(){

            @Override
            public void run() {
                SelectRecipelDrugsView view = SpringUtil.getBean(SelectRecipelDrugsView.class);
                Stage stage = (Stage)view.getView().getScene().getWindow();
                stage.getScene().setOnKeyReleased((EventHandler)new EventHandler<KeyEvent>(){

                    public void handle(KeyEvent e) {
                        if (e.getCode() == KeyCode.ENTER) {
                            SelectRecipelDrugsController.this.sureAction();
                        } else if (e.getCode() == KeyCode.ESCAPE) {
                            SelectRecipelDrugsController.this.cancelAction();
                        }
                        e.consume();
                    }
                });
            }
        }, 1000L);
        if (this.numTh == 1) {
            this.selectRecipelDrugsOutDataList = new ArrayList<SelectRecipelDrugsOutData>();
            this.getAll(this.selectRecipelDrugsOutDataList);
        }
        this.initTable();
    }

    public void getAll(List<SelectRecipelDrugsOutData> selectRecipelDrugsOutDataList) {
        List<GetSalesReceiptsTableOutData> recipelDrugList = this.salesReceiptsMainController.recipelDrugList;
        for (int i = 0; i < recipelDrugList.size(); ++i) {
            GetSalesReceiptsTableOutData salesReceiptsTableOutData = recipelDrugList.get(i);
            SelectRecipelDrugsOutData selectRecipelDrugsOutData = new SelectRecipelDrugsOutData();
            selectRecipelDrugsOutData.setIndex(String.valueOf(i + 1));
            selectRecipelDrugsOutData.setNum(salesReceiptsTableOutData.getNum());
            selectRecipelDrugsOutData.setProName(salesReceiptsTableOutData.getProName());
            selectRecipelDrugsOutData.setPrePrice(salesReceiptsTableOutData.getPrcAmount());
            selectRecipelDrugsOutData.setProFactoryName(salesReceiptsTableOutData.getProFactoryName());
            selectRecipelDrugsOutData.setSpecs(salesReceiptsTableOutData.getProSpecs());
            selectRecipelDrugsOutData.setProCode(salesReceiptsTableOutData.getProCode());
            selectRecipelDrugsOutData.setProUnit(salesReceiptsTableOutData.getProUnit());
            selectRecipelDrugsOutData.setGssdBatch(salesReceiptsTableOutData.getPdAndExpData().getGssbBatch());
            selectRecipelDrugsOutData.setIndexD(salesReceiptsTableOutData.getIndex());
            selectRecipelDrugsOutDataList.add(selectRecipelDrugsOutData);
        }
    }

    public void removeSelect() {
        this.selectDataIndexList.remove(this.selectDataList);
    }

    private void initCheckBox() {
        this.checkBox.setCellFactory(col -> {
            TableCell<SelectRecipelDrugsOutData, CheckBox> cell = new TableCell<SelectRecipelDrugsOutData, CheckBox>(){

                protected void updateItem(CheckBox item, boolean empty) {
                    super.updateItem(item, empty);
                    this.setGraphic((Node)item);
                    if (item != null) {
                        item.setOnMouseClicked(col -> {
                            if (CollectionUtils.isEmpty((Collection)SelectRecipelDrugsController.this.observableTableList)) {
                                return;
                            }
                            int index = this.getIndex();
                            if (((SelectRecipelDrugsOutData)SelectRecipelDrugsController.this.observableTableList.get(index)).getCheckBox().isSelected().booleanValue()) {
                                SelectRecipelDrugsController.this.selectDataList.add((SelectRecipelDrugsOutData)SelectRecipelDrugsController.this.observableTableList.get(index));
                            } else {
                                SelectRecipelDrugsController.this.selectDataList.remove(SelectRecipelDrugsController.this.observableTableList.get(index));
                            }
                        });
                    }
                }
            };
            return cell;
        });
    }

    private TableView<SelectRecipelDrugsOutData> initTable() {
        for (int i = 0; i < this.selectDataIndexList.size(); ++i) {
            this.selectRecipelDrugsOutDataList.removeAll((Collection)this.selectDataIndexList.get(i));
        }
        this.observableTableList.clear();
        this.observableTableList = FXCollections.observableArrayList(this.selectRecipelDrugsOutDataList);
        this.tableView.setItems(this.observableTableList);
        return this.tableView;
    }

    private void bangding() {
        this.specs.setCellValueFactory((Callback)new PropertyValueFactory(this.specs.getId()));
        this.proFactoryName.setCellValueFactory((Callback)new PropertyValueFactory(this.proFactoryName.getId()));
        this.prePrice.setCellValueFactory((Callback)new PropertyValueFactory(this.prePrice.getId()));
        this.num.setCellValueFactory((Callback)new PropertyValueFactory(this.num.getId()));
        this.index.setCellValueFactory((Callback)new PropertyValueFactory(this.index.getId()));
        this.proName.setCellValueFactory((Callback)new PropertyValueFactory(this.proName.getId()));
        this.checkBox.setCellValueFactory(cellData -> ((SelectRecipelDrugsOutData)cellData.getValue()).getCheckBox().getCustomCheckBox());
    }

    @FXML
    private void sureAction() {
        if (ObjectUtil.isEmpty(this.selectDataList)) {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u672a\u9009\u62e9\u5bf9\u5e94\u8bb0\u5f55\uff0c\u8bf7\u91cd\u65b0\u9009\u62e9\uff01");
            alert.showAndWait();
            return;
        }
        this.pane.getScene().getWindow().hide();
        this.selectDataIndexList.add(this.selectDataList);
        if (!this.upPaper) {
            this.recipelInfoInputController.num = this.numTh;
            this.recipelInfoInputController.init();
        } else {
            this.remoteAuditController.numTh = String.valueOf(this.numTh);
            this.remoteAuditController.init();
        }
        Platform.runLater((Runnable)new Runnable(){

            @Override
            public void run() {
                if (!SelectRecipelDrugsController.this.upPaper) {
                    CommonUtil.showView(RecipelInfoInputView.class, Modality.APPLICATION_MODAL);
                    if (((SelectRecipelDrugsController)SelectRecipelDrugsController.this).recipelInfoInputController.flag && ((SelectRecipelDrugsController)SelectRecipelDrugsController.this).recipelDrugsController.numZhang > SelectRecipelDrugsController.this.numTh) {
                        ++SelectRecipelDrugsController.this.numTh;
                        SelectRecipelDrugsController.this.init();
                        CommonUtil.showView(SelectRecipelDrugsView.class, Modality.APPLICATION_MODAL);
                    }
                } else {
                    ArrayList<GaiaSdSaleRecipelRecordOutData> dataList = new ArrayList<GaiaSdSaleRecipelRecordOutData>();
                    for (int i = 0; i < SelectRecipelDrugsController.this.selectDataList.size(); ++i) {
                        SelectRecipelDrugsOutData selectRecipelDrugsOutData = SelectRecipelDrugsController.this.selectDataList.get(i);
                        GaiaSdSaleRecipelRecordOutData data = new GaiaSdSaleRecipelRecordOutData();
                        data.setIndex(i + 1);
                        data.setGssrVoucherId("");
                        data.setProCode(selectRecipelDrugsOutData.getProCode());
                        data.setProCommonname(selectRecipelDrugsOutData.getProName());
                        data.setProSpecs(selectRecipelDrugsOutData.getSpecs());
                        data.setProUnit(selectRecipelDrugsOutData.getProUnit());
                        data.setGssdBatch(selectRecipelDrugsOutData.getGssdBatch());
                        data.setGssdQty(selectRecipelDrugsOutData.getNum());
                        data.setUploadImgStatus("\u5426");
                        dataList.add(data);
                    }
                    ((SelectRecipelDrugsController)SelectRecipelDrugsController.this).remoteAuditController.dataList = dataList;
                    CommonUtil.showView(RemoteAuditlView.class, Modality.APPLICATION_MODAL, "\u4e0a\u4f20\u5ba1\u65b9");
                }
                SelectRecipelDrugsController.this.recipelDrugsController.cancelAction();
            }
        });
    }

    @FXML
    private void cancelAction() {
        this.pane.getScene().getWindow().hide();
    }

    public TableColumn<SelectRecipelDrugsOutData, String> getSpecs() {
        return this.specs;
    }

    public TableColumn<SelectRecipelDrugsOutData, String> getProFactoryName() {
        return this.proFactoryName;
    }

    public TableColumn<SelectRecipelDrugsOutData, String> getPrePrice() {
        return this.prePrice;
    }

    public TableColumn<SelectRecipelDrugsOutData, String> getNum() {
        return this.num;
    }

    public TableView<SelectRecipelDrugsOutData> getTableView() {
        return this.tableView;
    }

    public TableColumn<SelectRecipelDrugsOutData, String> getIndex() {
        return this.index;
    }

    public TableColumn<SelectRecipelDrugsOutData, CheckBox> getCheckBox() {
        return this.checkBox;
    }

    public TableColumn<SelectRecipelDrugsOutData, String> getProName() {
        return this.proName;
    }

    public AnchorPane getPane() {
        return this.pane;
    }

    public Text getTitle() {
        return this.title;
    }

    public SalesReceiptsMainController getSalesReceiptsMainController() {
        return this.salesReceiptsMainController;
    }

    public RecipelInfoInputController getRecipelInfoInputController() {
        return this.recipelInfoInputController;
    }

    public RecipelDrugsController getRecipelDrugsController() {
        return this.recipelDrugsController;
    }

    public RemoteAuditController getRemoteAuditController() {
        return this.remoteAuditController;
    }

    public ObservableList<SelectRecipelDrugsOutData> getObservableTableList() {
        return this.observableTableList;
    }

    public int getNumTh() {
        return this.numTh;
    }

    public boolean isUpPaper() {
        return this.upPaper;
    }

    public List<SelectRecipelDrugsOutData> getSelectDataList() {
        return this.selectDataList;
    }

    public List<SelectRecipelDrugsOutData> getSelectRecipelDrugsOutDataList() {
        return this.selectRecipelDrugsOutDataList;
    }

    public List<List<SelectRecipelDrugsOutData>> getSelectDataIndexList() {
        return this.selectDataIndexList;
    }

    public void setSpecs(TableColumn<SelectRecipelDrugsOutData, String> specs) {
        this.specs = specs;
    }

    public void setProFactoryName(TableColumn<SelectRecipelDrugsOutData, String> proFactoryName) {
        this.proFactoryName = proFactoryName;
    }

    public void setPrePrice(TableColumn<SelectRecipelDrugsOutData, String> prePrice) {
        this.prePrice = prePrice;
    }

    public void setNum(TableColumn<SelectRecipelDrugsOutData, String> num) {
        this.num = num;
    }

    public void setTableView(TableView<SelectRecipelDrugsOutData> tableView) {
        this.tableView = tableView;
    }

    public void setIndex(TableColumn<SelectRecipelDrugsOutData, String> index) {
        this.index = index;
    }

    public void setCheckBox(TableColumn<SelectRecipelDrugsOutData, CheckBox> checkBox) {
        this.checkBox = checkBox;
    }

    public void setProName(TableColumn<SelectRecipelDrugsOutData, String> proName) {
        this.proName = proName;
    }

    public void setPane(AnchorPane pane) {
        this.pane = pane;
    }

    public void setTitle(Text title) {
        this.title = title;
    }

    public void setSalesReceiptsMainController(SalesReceiptsMainController salesReceiptsMainController) {
        this.salesReceiptsMainController = salesReceiptsMainController;
    }

    public void setRecipelInfoInputController(RecipelInfoInputController recipelInfoInputController) {
        this.recipelInfoInputController = recipelInfoInputController;
    }

    public void setRecipelDrugsController(RecipelDrugsController recipelDrugsController) {
        this.recipelDrugsController = recipelDrugsController;
    }

    public void setRemoteAuditController(RemoteAuditController remoteAuditController) {
        this.remoteAuditController = remoteAuditController;
    }

    public void setObservableTableList(ObservableList<SelectRecipelDrugsOutData> observableTableList) {
        this.observableTableList = observableTableList;
    }

    public void setNumTh(int numTh) {
        this.numTh = numTh;
    }

    public void setUpPaper(boolean upPaper) {
        this.upPaper = upPaper;
    }

    public void setSelectDataList(List<SelectRecipelDrugsOutData> selectDataList) {
        this.selectDataList = selectDataList;
    }

    public void setSelectRecipelDrugsOutDataList(List<SelectRecipelDrugsOutData> selectRecipelDrugsOutDataList) {
        this.selectRecipelDrugsOutDataList = selectRecipelDrugsOutDataList;
    }

    public void setSelectDataIndexList(List<List<SelectRecipelDrugsOutData>> selectDataIndexList) {
        this.selectDataIndexList = selectDataIndexList;
    }

    public boolean equals(Object o) {
        if (o == this) {
            return true;
        }
        if (!(o instanceof SelectRecipelDrugsController)) {
            return false;
        }
        SelectRecipelDrugsController other = (SelectRecipelDrugsController)o;
        if (!other.canEqual(this)) {
            return false;
        }
        TableColumn<SelectRecipelDrugsOutData, String> this$specs = this.getSpecs();
        TableColumn<SelectRecipelDrugsOutData, String> other$specs = other.getSpecs();
        if (this$specs == null ? other$specs != null : !this$specs.equals(other$specs)) {
            return false;
        }
        TableColumn<SelectRecipelDrugsOutData, String> this$proFactoryName = this.getProFactoryName();
        TableColumn<SelectRecipelDrugsOutData, String> other$proFactoryName = other.getProFactoryName();
        if (this$proFactoryName == null ? other$proFactoryName != null : !this$proFactoryName.equals(other$proFactoryName)) {
            return false;
        }
        TableColumn<SelectRecipelDrugsOutData, String> this$prePrice = this.getPrePrice();
        TableColumn<SelectRecipelDrugsOutData, String> other$prePrice = other.getPrePrice();
        if (this$prePrice == null ? other$prePrice != null : !this$prePrice.equals(other$prePrice)) {
            return false;
        }
        TableColumn<SelectRecipelDrugsOutData, String> this$num = this.getNum();
        TableColumn<SelectRecipelDrugsOutData, String> other$num = other.getNum();
        if (this$num == null ? other$num != null : !this$num.equals(other$num)) {
            return false;
        }
        TableView<SelectRecipelDrugsOutData> this$tableView = this.getTableView();
        TableView<SelectRecipelDrugsOutData> other$tableView = other.getTableView();
        if (this$tableView == null ? other$tableView != null : !this$tableView.equals(other$tableView)) {
            return false;
        }
        TableColumn<SelectRecipelDrugsOutData, String> this$index = this.getIndex();
        TableColumn<SelectRecipelDrugsOutData, String> other$index = other.getIndex();
        if (this$index == null ? other$index != null : !this$index.equals(other$index)) {
            return false;
        }
        TableColumn<SelectRecipelDrugsOutData, CheckBox> this$checkBox = this.getCheckBox();
        TableColumn<SelectRecipelDrugsOutData, CheckBox> other$checkBox = other.getCheckBox();
        if (this$checkBox == null ? other$checkBox != null : !this$checkBox.equals(other$checkBox)) {
            return false;
        }
        TableColumn<SelectRecipelDrugsOutData, String> this$proName = this.getProName();
        TableColumn<SelectRecipelDrugsOutData, String> other$proName = other.getProName();
        if (this$proName == null ? other$proName != null : !this$proName.equals(other$proName)) {
            return false;
        }
        AnchorPane this$pane = this.getPane();
        AnchorPane other$pane = other.getPane();
        if (this$pane == null ? other$pane != null : !this$pane.equals(other$pane)) {
            return false;
        }
        Text this$title = this.getTitle();
        Text other$title = other.getTitle();
        if (this$title == null ? other$title != null : !this$title.equals(other$title)) {
            return false;
        }
        SalesReceiptsMainController this$salesReceiptsMainController = this.getSalesReceiptsMainController();
        SalesReceiptsMainController other$salesReceiptsMainController = other.getSalesReceiptsMainController();
        if (this$salesReceiptsMainController == null ? other$salesReceiptsMainController != null : !(this$salesReceiptsMainController).equals(other$salesReceiptsMainController)) {
            return false;
        }
        RecipelInfoInputController this$recipelInfoInputController = this.getRecipelInfoInputController();
        RecipelInfoInputController other$recipelInfoInputController = other.getRecipelInfoInputController();
        if (this$recipelInfoInputController == null ? other$recipelInfoInputController != null : !this$recipelInfoInputController.equals(other$recipelInfoInputController)) {
            return false;
        }
        RecipelDrugsController this$recipelDrugsController = this.getRecipelDrugsController();
        RecipelDrugsController other$recipelDrugsController = other.getRecipelDrugsController();
        if (this$recipelDrugsController == null ? other$recipelDrugsController != null : !this$recipelDrugsController.equals(other$recipelDrugsController)) {
            return false;
        }
        RemoteAuditController this$remoteAuditController = this.getRemoteAuditController();
        RemoteAuditController other$remoteAuditController = other.getRemoteAuditController();
        if (this$remoteAuditController == null ? other$remoteAuditController != null : !(this$remoteAuditController).equals(other$remoteAuditController)) {
            return false;
        }
        ObservableList<SelectRecipelDrugsOutData> this$observableTableList = this.getObservableTableList();
        ObservableList<SelectRecipelDrugsOutData> other$observableTableList = other.getObservableTableList();
        if (this$observableTableList == null ? other$observableTableList != null : !this$observableTableList.equals(other$observableTableList)) {
            return false;
        }
        if (this.getNumTh() != other.getNumTh()) {
            return false;
        }
        if (this.isUpPaper() != other.isUpPaper()) {
            return false;
        }
        List<SelectRecipelDrugsOutData> this$selectDataList = this.getSelectDataList();
        List<SelectRecipelDrugsOutData> other$selectDataList = other.getSelectDataList();
        if (this$selectDataList == null ? other$selectDataList != null : !(this$selectDataList).equals(other$selectDataList)) {
            return false;
        }
        List<SelectRecipelDrugsOutData> this$selectRecipelDrugsOutDataList = this.getSelectRecipelDrugsOutDataList();
        List<SelectRecipelDrugsOutData> other$selectRecipelDrugsOutDataList = other.getSelectRecipelDrugsOutDataList();
        if (this$selectRecipelDrugsOutDataList == null ? other$selectRecipelDrugsOutDataList != null : !(this$selectRecipelDrugsOutDataList).equals(other$selectRecipelDrugsOutDataList)) {
            return false;
        }
        List<List<SelectRecipelDrugsOutData>> this$selectDataIndexList = this.getSelectDataIndexList();
        List<List<SelectRecipelDrugsOutData>> other$selectDataIndexList = other.getSelectDataIndexList();
        return !(this$selectDataIndexList == null ? other$selectDataIndexList != null : !(this$selectDataIndexList).equals(other$selectDataIndexList));
    }

    protected boolean canEqual(Object other) {
        return other instanceof SelectRecipelDrugsController;
    }

    public int hashCode() {
        int PRIME = 59;
        int result = 1;
        TableColumn<SelectRecipelDrugsOutData, String> $specs = this.getSpecs();
        result = result * 59 + ($specs == null ? 43 : $specs.hashCode());
        TableColumn<SelectRecipelDrugsOutData, String> $proFactoryName = this.getProFactoryName();
        result = result * 59 + ($proFactoryName == null ? 43 : $proFactoryName.hashCode());
        TableColumn<SelectRecipelDrugsOutData, String> $prePrice = this.getPrePrice();
        result = result * 59 + ($prePrice == null ? 43 : $prePrice.hashCode());
        TableColumn<SelectRecipelDrugsOutData, String> $num = this.getNum();
        result = result * 59 + ($num == null ? 43 : $num.hashCode());
        TableView<SelectRecipelDrugsOutData> $tableView = this.getTableView();
        result = result * 59 + ($tableView == null ? 43 : $tableView.hashCode());
        TableColumn<SelectRecipelDrugsOutData, String> $index = this.getIndex();
        result = result * 59 + ($index == null ? 43 : $index.hashCode());
        TableColumn<SelectRecipelDrugsOutData, CheckBox> $checkBox = this.getCheckBox();
        result = result * 59 + ($checkBox == null ? 43 : $checkBox.hashCode());
        TableColumn<SelectRecipelDrugsOutData, String> $proName = this.getProName();
        result = result * 59 + ($proName == null ? 43 : $proName.hashCode());
        AnchorPane $pane = this.getPane();
        result = result * 59 + ($pane == null ? 43 : $pane.hashCode());
        Text $title = this.getTitle();
        result = result * 59 + ($title == null ? 43 : $title.hashCode());
        SalesReceiptsMainController $salesReceiptsMainController = this.getSalesReceiptsMainController();
        result = result * 59 + ($salesReceiptsMainController == null ? 43 : ($salesReceiptsMainController).hashCode());
        RecipelInfoInputController $recipelInfoInputController = this.getRecipelInfoInputController();
        result = result * 59 + ($recipelInfoInputController == null ? 43 : $recipelInfoInputController.hashCode());
        RecipelDrugsController $recipelDrugsController = this.getRecipelDrugsController();
        result = result * 59 + ($recipelDrugsController == null ? 43 : $recipelDrugsController.hashCode());
        RemoteAuditController $remoteAuditController = this.getRemoteAuditController();
        result = result * 59 + ($remoteAuditController == null ? 43 : ($remoteAuditController).hashCode());
        ObservableList<SelectRecipelDrugsOutData> $observableTableList = this.getObservableTableList();
        result = result * 59 + ($observableTableList == null ? 43 : $observableTableList.hashCode());
        result = result * 59 + this.getNumTh();
        result = result * 59 + (this.isUpPaper() ? 79 : 97);
        List<SelectRecipelDrugsOutData> $selectDataList = this.getSelectDataList();
        result = result * 59 + ($selectDataList == null ? 43 : ($selectDataList).hashCode());
        List<SelectRecipelDrugsOutData> $selectRecipelDrugsOutDataList = this.getSelectRecipelDrugsOutDataList();
        result = result * 59 + ($selectRecipelDrugsOutDataList == null ? 43 : ($selectRecipelDrugsOutDataList).hashCode());
        List<List<SelectRecipelDrugsOutData>> $selectDataIndexList = this.getSelectDataIndexList();
        result = result * 59 + ($selectDataIndexList == null ? 43 : ($selectDataIndexList).hashCode());
        return result;
    }

    public String toString() {
        return "SelectRecipelDrugsController(specs=" + this.getSpecs() + ", proFactoryName=" + this.getProFactoryName() + ", prePrice=" + this.getPrePrice() + ", num=" + this.getNum() + ", tableView=" + this.getTableView() + ", index=" + this.getIndex() + ", checkBox=" + this.getCheckBox() + ", proName=" + this.getProName() + ", pane=" + this.getPane() + ", title=" + this.getTitle() + ", salesReceiptsMainController=" + this.getSalesReceiptsMainController() + ", recipelInfoInputController=" + this.getRecipelInfoInputController() + ", recipelDrugsController=" + this.getRecipelDrugsController() + ", remoteAuditController=" + this.getRemoteAuditController() + ", observableTableList=" + this.getObservableTableList() + ", numTh=" + this.getNumTh() + ", upPaper=" + this.isUpPaper() + ", selectDataList=" + this.getSelectDataList() + ", selectRecipelDrugsOutDataList=" + this.getSelectRecipelDrugsOutDataList() + ", selectDataIndexList=" + this.getSelectDataIndexList() + ")";
    }
}

